每一个RabbitMQ服务器都能够创建虚拟的消息服务器,我们称之为虚拟主机(virtual host),简称为 vhost。
每一个 vhost 本质上是一个独立的小型RabbitMQ服务器,拥有自己独立的队列、交换器和绑定关系等,并且它拥有自己独立的权限。
vhost 就像是虚拟机与物理服务器一样,它们在各个实例间提供逻辑上的分离,为不同程序安全保密地运行数据,它既能将同一个RabbitMQ中的众多客户去分开,又可以避免队列和交换器等命名冲突。
vhost 之间是绝对隔离的,无法将 vhost1 中的交换器与 vhost2 中的队列进行绑定。
当RabbitMQ的使用达到一定的规模后,建议用户对业务功能、场景进行归类区分,并为之分配独立的 vhost。
xxxxxxxxxxrabbitmqctl add_vhost {vhost}
参数说明:
xrabbitmqctl delete_vhost {vhost}
参数说明:
xrabbitmqctl list_vhosts {vhost}
参数说明:
在RabbitMQ中,权限控制是以 vhost 为单位的。当创建一个用户时,用户通常会被指派给至少一个 vhost,并且只能访问被指派的 vhost 内的队列、交换器和绑定关系等。因此,RabbitMQ中的授予权限是指在 vhost 级别对用户而言的权限授予。
xrabbitmqctl set_permissions -p {vhost} {user} {conf} {write} {read}
参数说明:
示例:
授予root用户可访问虚拟主机 vhost1,并在所有资源上都具备可配置、可写和可读的权限。
xrabbitmqctl set_permissions -p vhost1 root ".*" ".*" ".*"
授予root用户可访问虚拟主机 vhost2,在以“queue”开头的资源上具备可配置权限,并在所有资源上拥有可写和可读的权限。
xxxxxxxxxxrabbitmqctl set_permissions -p vhost2 root "^queue.*" ".*" ".*"
xrabbitmqctl clear_permissions -p {vhost} {user}
参数说明:
查看指定 vhost 的权限
xrabbitmqctl list_permissions -p {vhost}
参数说明:
查看指定用户的权限
xrabbitmqctl list_user_permissions {user}
参数说明: